package com.vj.router.server.util;

import java.util.concurrent.ConcurrentHashMap;

public class DeviceGatewayMapCacheUtil {

    // 存储登录设备 ID 与 网关ID 的映射关系
    //----------------------------
    //device_id   |   gateway_id
    //----------------------------
    //device123   |   gateway01
    //device456   |   gateway02
    private static final ConcurrentHashMap<String, String> DeviceGatewayMap = new ConcurrentHashMap<>();

    // 设备登录、添加设备和gatewayId的绑定关系
    public static void putDeviceIdToGatewayId(String deviceId,String gatewayId) {
//        // 查找当前设备是否已经绑定到其他通道
//        Channel existingDeviceGatewayCache = DeviceGatewayMap.get(deviceId);
//
//        // 如果设备已经绑定到不同的通道，关闭旧的通道
//        if (existingDeviceGatewayCache != null && !existingDeviceGatewayCache.id().asShortText().equals(channel.id().asShortText())) {
//            closeOldChannel(existingDeviceGatewayCache);
//        }

        // 更新当前设备与通道的绑定关系
        bindDeviceIdToGatewayId(deviceId, gatewayId);
    }


    // 绑定设备ID 与通道channel关系的方法
    private static void bindDeviceIdToGatewayId(String deviceId, String gatewayId) {
        // 存储当前设备 ID 和 Channel 的映射关系
        DeviceGatewayMap.put(deviceId, gatewayId);
    }

    // 根据设备ID 获取对应的 Channel
    public static String getDeviceIdToGatewayId(String deviceId) {
        return DeviceGatewayMap.get(deviceId);
    }

    // 删除设备缓存的方法（用于会话断开时清理）
    public static void removeDeviceIdToGatewayId(String deviceId) {
        // 查找并移除该设备与通道的绑定关系
        String cacheGatewayId = DeviceGatewayMap.remove(deviceId);
        if (cacheGatewayId != null) {
            System.out.println("deviceId " + deviceId + " 未成功移除");
        }
    };
    }
